**************************
*
*  EXPLOSIONS
*
**************************
MODE EQU $9C9
POSE EQU $9C6
XH EQU $9C3
YH EQU $9C4
FIGXR EQU $5A00
REG EQU $8CE
LEV EQU $8CA
OLDKEY EQU $9C0
XR EQU $9D8
LITCOUNT EQU $8E3
XCH EQU $8E0
YCH EQU $8E1
FUSECOUNT EQU $8E2
LITFLG EQU $8E4
STICKCOUNT EQU $8E5
PRINTA EQU $5A12 
COLFLG EQU $E3
PRINTB EQU $5A15 
RANDOM EQU $C18 
RNDL EQU $4E
ALLOUT EQU $1000 
DELTA EQU $8EC
TEMP3 EQU $8E6
RNUM EQU $8C9
LEVCH EQU $8EB ;LEV OF CHARGE
PTAB EQU $93C0               
REGH EQU $8F0 
REGCH EQU $8F1
ROW EQU $8CC
COL EQU $8CD
XTEMP EQU $8C3
SETRNUM EQU $C00
PRB EQU $5703     
ERASEH EQU $1003
REALLYFALL EQU $1006
ERASEOLD EQU $A3E
CHFL EQU $8D8
AHI EQU $800
ALO EQU $900
YBOT EQU $FC
XOLD EQU $EE0 
LEVOP EQU $E30        
OPMODE0 EQU $E90        
NEWPRINT EQU $C3B 
NOISEFLG EQU $8DA
DRAWFLOOR EQU $5A4B
BLOWNUP EQU $6503
*
*
 ORG $5200 
*
*  CHANGE ORIGIN LATER
*
*
*
PLACE JMP PLACE1
LIT JMP LIT1
CHECKCHARGE JMP CHECKCHARGE1
REGSET JMP REGSET1
LEVSETTER JMP LEVSETTER1
PISTOLSHOT JMP PISTOLSHOT1
LETFALL JMP LFB
SHORTNOISE JMP NO1
*
*
EXPLO LDX LEVCH 
 CPX #2
 BNE CEX ;NO HOLE ALLLOWED
 LDA ROW ;IN LEVEL 2
 CMP #7 ;FLOOR 7
 BEQ JSET
CEX LDA PTAB,X 
 STA OR1+1
 STA ST1+1
 STA OR2+1
 STA ST2+1
 LDX REGCH 
 LDA EXMASK,X
 LDX RNUM
OR1 ORA $9500,X
ST1 STA $9500,X
 LDA REGCH 
 BNE CH7
 DEC COL 
 JSR SETRNUM
 STX XTEMP
 INC COL 
 LDA #1   
 BNE FX
CH7 CMP #7
 BNE LX
 INC COL     
 JSR SETRNUM
 STX XTEMP
 DEC COL 
 LDA #$80 
FX LDX XTEMP
OR2 ORA $9500,X
ST2 STA $9500,X
JSET JSR SETRNUM 
LX LDA XCH 
 STA XR
 LDA #$25      
 LDX XCH
 LDY YCH
 JSR BANG1
 JSR SPIRAL
 LDA #0
 STA LITCOUNT
ONE LDX LITCOUNT
 LDY SPY,X
 LDA SPX,X
 TAX
 LDA #$25
 JSR BANG2
 INC LITCOUNT
 LDA LITCOUNT
 CMP #9
 BNE ONE  
 LDA #$0  
 STA LITCOUNT
 LDA #$25      
 LDX XCH
 LDY YCH
 JSR BANG2 
TWO LDX LITCOUNT
 LDY SPY,X
 LDA SPX,X  
 TAX
 LDA #$25
 JSR BANG2 
 INC LITCOUNT
 LDA LITCOUNT
 CMP #9
 BNE TWO  
 LDA #0     
 STA LITFLG ;CLEAR CHECK BITS
 DEC STICKCOUNT
 JSR OPDMG
 LDA XCH
 STA XR
 LDX LEVCH
 JSR PRB
 LDA ROW
 CMP #7
 BNE EXPOUT
 LDA LEVCH
 CMP #2
 BNE EXPOUT
 LDY #$A0
 JSR DRAWFLOOR
EXPOUT RTS
*************************
*
BANG1 JSR PRINTB 
PISTOLSHOT1 LDA #$7F 
NO1 STA FUSECOUNT
SHUFFLE JSR RANDOM 
 LDX RNDL
LUPIN DEX      
 BNE LUPIN
 BIT NOISEFLG
 BMI SKPN
 LDA $C030 ;TOGGLE SPKR
SKPN JSR RANDOM 
 LDX RNDL
LUP2 DEX
 BPL LUP2
 DEC FUSECOUNT
 BPL SHUFFLE 
 RTS
*
*
BANG2 JSR PRINTA
 LDA #0
 STA COLFLG
 LDA #$25 
 JMP NO1
*
*
*
PLACE1 LDA MODE 
 AND #8
 BEQ NOC
 LDA POSE
 CMP #6
 BEQ RITPL 
 CMP #7
 BEQ RITPL 
 CMP #$16
 BEQ LEFPL 
 CMP #$17
 BEQ LEFPL 
NOC JSR $FF3A ;BELL
 LDA #'+'
 STA OLDKEY
 JMP ALLOUT
*
LEFPL LDA XH 
 STA XCH
 JMP PLACEIT
RITPL CLC 
 LDA XH 
 ADC #4 
 STA XCH 
PLACEIT LDA STICKCOUNT
 BEQ NOC
 LDA #0
 STA CHFL
 JSR LEVSETTER1  
 LDA LEV
 STA LEVCH
 LDA XCH
 STA XTEMP
 JSR REGSET1
 STA REGCH
 LDA YH
 CLC
 ADC #$10      
 STA YCH
LFB LDA #$4B 
 LDX XCH
 LDY YCH
 JSR PRINTB 
 LDA #'+'
 STA OLDKEY
 JSR CHFLCHK
 LDA #0
 STA COLFLG
SOMELEFT LDA OLDKEY 
 CMP #'P'
 BEQ PASS
LIT1 JSR LEVSETTER1  
 LDA LEV
 CMP LEVCH
 BNE PASS
 LDA XH
 CMP XCH
 BEQ ITSLIT
 BCC LITLEFT
LITRIGHT SEC 
 SBC XCH
 STA DELTA
 JMP LITECH
LITLEFT LDA XCH
 SEC
 SBC XH
 STA DELTA
LITECH LDA DELTA
 CMP #5
 BCC ITSLIT
 JMP PASS
ITSLIT LDA #$80 
 STA LITFLG
 LDA #$FF 
 STA LITCOUNT
 LDA #'+'
 STA OLDKEY
PASS JMP ALLOUT 
*
*
*
CHECKCHARGE1 BIT CHFL
 BPL CHECKCHARGE2
 JMP CHDROP
CHECKCHARGE2 BIT LITFLG 
 BPL OUTCHARGE
 BVS COUNTDOWN
 LDA #$40
 ORA LITFLG
 STA LITFLG
COUNTDOWN LDA #$80 
 STA $9D4 ;DISABLE COLFLG
 LDA #$50 
 LDX XCH
 LDY YCH
 JSR PRINTA
 NOP
 NOP
 NOP
 DEC LITCOUNT
 BNE OUTCHARGE
 SEC
 LDA YCH
 SBC #$10
 STA YCH
 DEC XCH
 DEC XCH
 NOP
 NOP
 NOP
 JSR EXPLO
 JSR DAMAGECHK
OUTCHARGE RTS
*
*
*******************************
*
REGSET1 LDX XTEMP
 LDA REGTAB,X
 STA REGH
 RTS
*
********************************
*
*
*********************
* PREPARE OFFSET TABLE
***********************
*
*
*
SPIRAL LDA XCH
 STA SPX
 SEC
 SBC#2
 STA SPX+8
 CLC
 ADC #1
 STA SPX+2
 STA SPX+4
 LDA XCH
 STA SPX+5
 STA SPX+6
 CLC
 ADC #1
 STA SPX+1
 STA SPX+3
 CLC
 LDA XCH
 ADC #2 
 STA SPX+7
 LDA YCH
 STA SPY
 STA SPY+7
 STA SPY+8
 CLC
 ADC #$10
 STA SPY+6
 SEC
 SBC #8
 STA SPY+2
 STA SPY+3
 LDA YCH
 SEC
 SBC #8
 STA SPY+1
 STA SPY+4
 SEC
 SBC #8
 STA SPY+5
 RTS
*
*
*
*******************
*
*
*
LEVSETTER1 LDA YH    
 CMP #$30
 BCC SLV0
 CMP #$68
 BCC SLV1
SLV2 LDA #2       
 BNE LEVOUT
SLV1 LDA #1
 STA LEV
 BNE LEVOUT
SLV0 LDA #0
LEVOUT STA LEV 
 RTS         
*
*
DAMAGECHK JSR LEVSETTER1
 LDA LEV
 CMP LEVCH
 BNE DMGOUT
 LDA XH
 CMP XCH
 BEQ BLEWUP
 BCC COMLEFT
COMRIGHT SEC 
 SBC XCH
 STA DELTA
 JMP ASSESS
DMGOUT RTS
COMLEFT LDA XCH
 SEC
 SBC XH
 STA DELTA
ASSESS LDA DELTA
 CMP #7
 BCC BLEWUP
 LDA #39
 SEC
 SBC DELTA
 STA $9CF ;DOWNCOUNT
 JSR ERASEH        
 DEC YH
 DEC YH
 JSR ERASEH 
 LDA #0
 STA $9CC ;STA CYCLE
 JMP REALLYFALL         
*
*
OPDMG LDX #$F
CHOPX LDA OPMODE0,X 
 AND #$80
 BEQ NEXTOP
 LDA LEVOP,X
 CMP LEVCH
 BNE NEXTOP
 LDA XCH    
 CLC
 ADC #6 
 CMP XOLD,X 
 BCS STLCHK
 JMP NEXTOP
STLCHK CLC
 LDA XCH
 SBC #6 
 CMP XOLD,X
 BCC FINOP
 JMP NEXTOP
FINOP LDA #0      
 STA OPMODE0,X
 JSR NEWPRINT         
NEXTOP DEX
 BPL CHOPX
 RTS
*
BLEWUP JMP BLOWNUP                 
*********************
*
*
*
SETCHLEV LDA YCH     
 CMP #$30
 BCC CLV0
 CMP #$68
 BCC CLV1
CLV2 LDA #2       
 BNE LEVCOUT 
CLV1 LDA #1
 STA LEVCH 
 BNE LEVCOUT 
CLV0 LDA #0
LEVCOUT STA LEVCH 
 RTS         
*
*
CHFLCHK LDX XCH
 LDY YBOT
 INY
 LDA AHI,Y
 STA CHLOOK+2
 LDA ALO,Y
 STA CHLOOK+1
CHLOOK LDA $2000,X ;CHANGEABLE
 BNE SKIPFALL
CHFALL LDA #$80
 STA CHFL
 RTS
SKIPFALL LDA #0
 STA CHFL
 RTS
*
CHDROP LDY YCH
 LDX XCH
 LDA #$4B 
 JSR ERASEOLD
 CLC
 LDA YCH
 ADC #3
 STA YCH
 LDY YCH
 LDX XCH
 LDA #$4B 
 JSR ERASEOLD
 JSR CHFLCHK
 BIT CHFL
 BPL HITB
 RTS
HITB JSR SETCHLEV 
 JSR EXPLO
 JSR DAMAGECHK
 RTS
*
*
SPX DFB 0,0,0,0,0,0,0,0,0 
SPY DFB 0,0,0,0,0,0,0,0,0 
 ORG $95C0
*
REGTAB DFB 0,0,0,0,0
 DFB 1,1,1,1,1 
 DFB 2,2,2,2,2        
 DFB 3,3,3,3,3      
 DFB 4,4,4,4,4      
 DFB 5,5,5,5,5      
 DFB 6,6,6,6,6       
 DFB 7,7,7,7,7       
*
EXMASK DFB 128,64,32,16,8,4,2,1 
*
*
